package com.exam.service.Impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.exam.annotation.Cache;
import com.exam.entity.UserRole;
import com.exam.mapper.UserRoleMapper;
import com.exam.service.UserRoleService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.concurrent.TimeUnit;

@Service
@RequiredArgsConstructor
public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements UserRoleService {

    private final  UserRoleMapper userRoleMapper;

    /**
     * 根据角色ID获取菜单信息
     *
     * @param roleId 角色ID
     * @return 返回菜单信息
     */
    @Override
    // 使用缓存注解，设置缓存前缀为"menu"，后缀为角色ID，缓存有效期为24小时，随机时间范围为10小时
    @Cache(prefix = "menu", suffix = "#roleId", ttl = 60 * 60 * 24, randomTime = 60 * 60 * 10)
    public String getMenuInfo(Integer roleId) {
        // 查询UserRole表中与给定角色ID匹配的记录
        // 调用该记录的getMenuInfo方法获取菜单信息
        return userRoleMapper.selectOne(new QueryWrapper<UserRole>().eq("role_id",roleId)).getMenuInfo();
    }
    /**
     * 获取用户角色列表
     *
     * @return 用户角色列表
     */
    @Override
    // 使用缓存注解，设置缓存前缀为"userRole"，缓存有效期为30天，随机时间范围为10天，时间单位为天
    @Cache(prefix="userRole",ttl=30,randomTime=10,timeUnit= TimeUnit.DAYS)
    public List<UserRole> getUserRole() {

        // 调用userRoleMapper的selectList方法，传入null参数，查询用户角色列表
        return userRoleMapper.selectList(null);
    }
}
